package muhnes.sizoo.etl;

import java.text.DecimalFormat;
import org.primefaces.context.RequestContext;
import scriptella.interactive.ProgressIndicatorBase;


/**
 * Clase que funciona para realizar la carga de datos desde fuentes externas al
 * programa
 * 
 * @author Nelson Chicas
 */
public class PrimeFacesProgressIndicator extends ProgressIndicatorBase {
    
    private static final RequestContext context = RequestContext.getCurrentInstance();
    private final DecimalFormat decimalFormat = new DecimalFormat("###");
    private String title;

    /**
     * Metodo para obtener el titulo de la fuente de datos
     * 
     */
    public PrimeFacesProgressIndicator(String title) {
        this.title = title;
    }
    /**
     * Constructor de la clase
     */
    public PrimeFacesProgressIndicator() {
    }

    /**
     * Metodo para indicarle al usuario el porcentaje de carga que esta realizando
     */
    @Override
    protected void show(final String label, final double percentage) {
        StringBuilder r = new StringBuilder(32);

        if (title != null) {
            r.append(title);
        }

        if (label != null) {
            if (title != null) {
                r.append(" ");
            }

            r.append(label);
        }

        r.append(": ");

        r.append(decimalFormat.format(100 * percentage));
        r.append('%');
        context.execute( "PrimeFaces.info('" + r.toString() + "')" );
    }

    /**
     * Metodo para realizar el nombre del label y si se autocompleto la carga
     * de datos o no
     */
    @Override
    protected void onComplete(final String label) {
        String content = ((title == null) ? "" : title + " ") + "Complete"; 
        context.execute( "PrimeFaces.info('" + content + "')" );
    }
    
}
